/**
 * Globant Hackathon Cordoba
 * Copyright (C) Globant 2010
 */
package com.prueba.client.servicios;

import java.util.Collection;
import java.util.HashMap;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.prueba.compartido.Accion;
import com.prueba.compartido.Espacio;
import com.prueba.compartido.Preferencia;
import com.prueba.compartido.Seccion;
import com.prueba.compartido.ServerException;
import com.prueba.compartido.Stakeholder;
import com.prueba.compartido.Sugerencia;

/**
 * The async counterpart of <code>PlanerService</code>.
 */
public interface PlanerServiceAsync {

    //roles
	public void getRoles(AsyncCallback<String[]> callback);
	
	//vistas y preferencias por defecto:
	public void getTiposVistas(AsyncCallback<HashMap<String,Integer> > callback);
	public void addVista(String id, int tipo, AsyncCallback<Boolean> callback);
	public void setPreferenciasPorDefecto(Collection<Stakeholder> stakeholders,HashMap<String,String> vistas,AsyncCallback<Collection<Preferencia>> callback);
	
	void getPreferencias(AsyncCallback<Collection<Preferencia>> callback ) throws ServerException;
	void getStakeholders(AsyncCallback<Collection<Stakeholder>> callback ) throws ServerException;
	void getSecciones(AsyncCallback<Collection<Seccion>> callback ) throws ServerException;
	void addStakeholder(Stakeholder stakeholder,AsyncCallback<Boolean> callback ) throws ServerException;
	void delStakeholder(String nombre,AsyncCallback<Boolean> callback ) throws ServerException;
	void getEspacios(AsyncCallback<Collection<Espacio>> callback) throws ServerException;
	void setPagina(String pagina, String espacio,
			AsyncCallback<Boolean> callback) throws ServerException;
	void updateSeccion(Seccion seccion, AsyncCallback<Boolean> callback) throws ServerException;
	void seguimientoPagina(AsyncCallback<Collection<Sugerencia>> callback) throws ServerException;
	void addPreferencia(Preferencia preferencia, AsyncCallback<Boolean> callback);
	void delPreferencia(String nombreStakeholder, String nombreVista,
			AsyncCallback<Boolean> callback);
	void ejecutarPlaner(Collection<Seccion> secciones, int costoiteracion,
			AsyncCallback<Collection<Accion>> callback);
	void logearUsuario(String url, String usuario, String password,
			AsyncCallback<Boolean> callback);
	
}
